package gui;

import gui.PesquisaContatoGUI.acaoMause;

import java.awt.GridLayout;
import java.awt.event.MouseListener;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;

import net.sf.jasperreports.engine.JRException;
import utility.Fachada;
import utility.Util;
import model.Chamado;
import control.ChamadoTableModel;

public class ListaChamadoGUI extends JDialog{

	JPanel painel;
	private JLabel jlTitulo;
	
	JPanel painelFundo;
	JTable tabela;
	JScrollPane barraRolagem;
	
	private ChamadoTableModel modelo;
	List<Chamado> lista;
	
	public ListaChamadoGUI() {
	
		setTitle("Lista de Chamado");
		setSize(800, 600);
		setLocationRelativeTo(null);
		setResizable(false);
		setModal(true);
		
	}
	
	public void Conteudo() {

		painel = new JPanel();
		painel.setLayout(null);
		
		jlTitulo = new JLabel("Chamados Abertos");
		
		
		jlTitulo.setBounds(90, 10, 300, 20);
		
		
		painel.add(jlTitulo);

		setContentPane(painel);
		criaJTable();
	}
	
	private void criaJTable() {
		
		painelFundo = new JPanel();
		painelFundo.setLayout(new GridLayout(1, 1));
		painelFundo.setBounds(10, 160, 770, 250);
		tabela = new JTable(modelo);
		
		tabela.addMouseListener(new acaoMause());
		//tabela.addKeyListener(new acaoTeclado());
		barraRolagem = new JScrollPane(tabela);
		painelFundo.add(barraRolagem);
		add(painelFundo);
		
		pesquisar();

	}
	
	TableRowSorter<TableModel> sorter ;
	
	private void pesquisar() {
		
		lista = Fachada.getInstace().getChamadoController().listar();
		modelo = new ChamadoTableModel(lista);
		tabela.setModel(modelo);
		
		sorter = new TableRowSorter<TableModel>(modelo);
        
        tabela.setRowSorter(sorter);
        
	}

	
	class acaoMause implements MouseListener{

		@Override
		public void mouseClicked(java.awt.event.MouseEvent e) {
			
			if(e.getClickCount() > 1){

				  int linhaSelecionada = -1;
		            linhaSelecionada = tabela.getSelectedRow();
		            
		            if (linhaSelecionada >= 0) {
		            
		            	Long idContato = (Long) tabela.getValueAt(linhaSelecionada, 0);
		            	
		            	List<Chamado> lista =new ArrayList<Chamado>();
		            	
		            	JOptionPane.showMessageDialog(null, "Gerando GUIA de visita, aguarde.");
		            	
		            	Chamado chamado = new Chamado();
		            	chamado = Fachada.getInstace().getChamadoController().buscar(idContato);
		            	
		            	lista.add(chamado);
		            	
							try {
								Util.gerarPdf(lista);
								
								JOptionPane.showMessageDialog(null, "Obrigado por aguardar. :)");
								dispose();
								Util.abrirPdf();
								
							} catch (JRException | SQLException e1) {
								// TODO Auto-generated catch block
								e1.printStackTrace();
							}
							
		            } else {
		                JOptionPane.showMessageDialog(null, "É necessário selecionar uma linha.");
		            }
			}
			
		}

		@Override
		public void mouseEntered(java.awt.event.MouseEvent e) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void mouseExited(java.awt.event.MouseEvent e) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void mousePressed(java.awt.event.MouseEvent e) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void mouseReleased(java.awt.event.MouseEvent e) {
			// TODO Auto-generated method stub
			
		}
		}
	
	}
